home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 15
/
Aminet 15 - Nov 1996.iso
/
Aminet
/
text
/
hyper
/
hsc_source.lha
/
source
/
ugly
/
infile.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-30
|
4KB
|
133 lines
/*
* ugly/infile.h
*
* ugly input file handling functions, header file
*
*/
#ifndef UGLY_INFILE_H /* avoid include twice */
#define UGLY_INFILE_H
/*
* includes
*/
#include "utypes.h"
#include "expstr.h"
#include "dllist.h"
/* reasonable value for buffer-step-size */
#define IF_BUFFER_VALUE 128
/*
* ugly input file structure (PRIVATE)
*/
typedef struct infile
{
STRPTR filename; /* file name */
FILE *infile; /* file opened if fopen() */
EXPSTR *lnbuf; /* buffer for inputline */
EXPSTR *wordbuf; /* word buffer */
EXPSTR *wspcbuf; /* word buffer (white spaces) */
ULONG filepos; /* file position */
ULONG pos_y; /* line number in file */
ULONG pos_x; /* pos. in current line */
ULONG wpos_y; /* line number in file of current word */
ULONG wpos_x; /* pos. in current line of current word */
ULONG base_x; /* base position */
ULONG base_y;
DLLIST *pos_list; /* list of pending pos-request */
ULONG pos_count; /* number of entries in poslist */
BOOL(*is_ws) (int ch); /* ptr to func that checks if a char */
/* is a white-space */
BOOL(*is_nc) (int ch); /* deto, but for "normal char" */
BOOL eof_reached; /* flag: TRUE, if end of file */
BOOL out_of_mem; /* flag: TRUE, if ran out of memory */
BOOL skipped_ws; /* flag: TRUE, if last infgetw */
/* skipped a white-space */
BOOL closed; /* flag: TRUE, if closed, but pending */
/* fpos-requested exist */
}
INFILE;
typedef struct infile_pos
{
INFILE *inpf;
STRPTR fname; /* filename */
ULONG x; /* column */
ULONG y; /* line */
ULONG fpos; /* file position */
}
INFILEPOS;
/*
* global macros
*/
#define infclose( f ) ((f) ? (infclose1( f ), f=NULL) : (NULL))
/*
* global vars
*/
extern STRPTR FNAME_STDIN;
/*
*
* extern function prototypes & global vars
*
*/
#ifndef NOEXTERN_UGLY_INFILE_H
extern INFILE *infopen(CONSTRPTR name, size_t step_size);
extern INFILE *infopen_str(CONSTRPTR fname, CONSTRPTR s, size_t step_size);
extern int infclose1(INFILE * inpf); /* PRIVATE; use infclose() */
extern int infgetc(INFILE * inpf);
extern STRPTR infgetw(INFILE * inpf);
extern STRPTR infgetall(INFILE * inpf);
extern STRPTR infgetcws(INFILE * inpf);
extern STRPTR infgetcw(INFILE * inpf);
extern int inungetc(int ch, INFILE * inpf);
extern size_t inungets(STRPTR s, INFILE * inpf);
extern size_t inungetcwws(INFILE * inpf);
extern size_t inungetcw(INFILE * inpf);
extern ULONG infget_x(INFILE * inpf);
extern ULONG infget_y(INFILE * inpf);
extern ULONG infget_wx(INFILE * inpf);
extern ULONG infget_wy(INFILE * inpf);
extern STRPTR infget_fname(INFILE * inpf);
extern BOOL infget_skws(INFILE * inpf);
extern BOOL inf_isws(char ch, INFILE * inpf);
extern size_t infskip_ws(INFILE * inpf);
extern int infeof(INFILE * inpf);
extern int infgotoeol(INFILE * inpf);
extern VOID del_infilepos(INFILEPOS * pos);
extern INFILEPOS *new_infilepos(INFILE * inpfile);
extern INFILEPOS *new_winfilepos(INFILE * inpfile);
extern STRPTR ifp_get_fname(INFILEPOS * pos);
extern ULONG ifp_get_x(INFILEPOS * pos);
extern ULONG ifp_get_y(INFILEPOS * pos);
extern BOOL set_infilepos(INFILE * inpf, INFILEPOS * pos);
extern BOOL set_infile_base(INFILE * inpf, INFILEPOS * pos);
#if 0
extern void inflog_enable(INFILE * inpf);
extern void inflog_disable(INFILE * inpf);
extern BOOL inflog_clear(INFILE * inpf);
extern BOOL inflog_app(INFILE * inpf, STRPTR s);
extern STRPTR infget_log(INFILE * inpf);
#endif
#endif /* NOEXTERN_UGLY_INFILE_H */
#endif /* UGLY_INFILE_H */